home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 September / PCWorld_2007-09_cd.bin / v cisle / testdisk / testdisk-6.7.win.exe / testdisk-6.7 / doc / iefixes.js < prev    next >
Text File  |  2007-06-26  |  4KB  |  127 lines

  1. // IE fixes javascript
  2.  
  3. var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
  4. var doneIETransform;
  5. var doneIEAlphaFix;
  6.  
  7. if (document.attachEvent)
  8.   document.attachEvent('onreadystatechange', hookit);
  9.  
  10. function hookit() {
  11.     if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) {
  12.         doneIETransform = true;
  13.         relativeforfloats();
  14.         fixalpha();
  15.     }
  16. }
  17.  
  18. // png alpha transparency fixes
  19. function fixalpha() {
  20.     // bg
  21.     if (isMSIE55 && !doneIEAlphaFix)
  22.     {
  23.         var plogo = document.getElementById('p-logo');
  24.         if (!plogo) return;
  25.  
  26.         var logoa = plogo.getElementsByTagName('a')[0];
  27.         if (!logoa) return;
  28.  
  29.         var bg = logoa.currentStyle.backgroundImage;
  30.         var imageUrl = bg.substring(5, bg.length-2);
  31.  
  32.         doneIEAlphaFix = true;
  33.  
  34.         if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
  35.             var logospan = logoa.appendChild(document.createElement('span'));
  36.            
  37.             logoa.style.backgroundImage = 'none';
  38.             logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
  39.             logospan.style.height = '100%';
  40.             logospan.style.position = 'absolute';
  41.             logospan.style.width = logoa.currentStyle.width;
  42.             logospan.style.cursor = 'hand';
  43.             // Center image with hack for IE5.5
  44.             if (document.documentElement.dir == "rtl") 
  45.             {
  46.               logospan.style.right = '50%';
  47.               logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"');
  48.             }
  49.             else
  50.             {
  51.               logospan.style.left = '50%';
  52.               logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
  53.             }
  54.             logospan.style.top = '50%';
  55.             logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"');
  56.  
  57.             var linkFix = logoa.appendChild(logoa.cloneNode());
  58.             linkFix.style.position = 'absolute';
  59.             linkFix.style.height = '100%';
  60.             linkFix.style.width = '100%';
  61.         }
  62.     }
  63. }
  64.  
  65. // fix ie6 disappering float bug
  66. function relativeforfloats() {
  67.     var bc = document.getElementById('bodyContent');
  68.     if (bc) {
  69.         var tables = bc.getElementsByTagName('table');
  70.         var divs = bc.getElementsByTagName('div');
  71.     }
  72.     setrelative(tables);
  73.     setrelative(divs);
  74. }
  75. function setrelative (nodes) {
  76.     var i = 0;
  77.     while (i < nodes.length) {
  78.         if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
  79.         (nodes[i].align && nodes[i].align != ('none'))) &&
  80.         (!nodes[i].style.position || nodes[i].style.position != 'relative'))) 
  81.         {
  82.             nodes[i].style.position = 'relative';
  83.         }
  84.         i++;
  85.     }
  86. }
  87.  
  88.  
  89. // Expand links for printing
  90.  
  91. String.prototype.hasClass = function(classWanted)
  92. {
  93.     var classArr = this.split(/\s/);
  94.     for (var i=0; i<classArr.length; i++)
  95.       if (classArr[i].toLowerCase() == classWanted.toLowerCase()) return true;
  96.     return false;
  97. }
  98.  
  99. var expandedURLs;
  100.  
  101. onbeforeprint = function() { 
  102.     expandedURLs = [];
  103.  
  104.     var contentEl = document.getElementById("content");
  105.  
  106.     if (contentEl)
  107.     {
  108.       var allLinks = contentEl.getElementsByTagName("a");
  109.  
  110.       for (var i=0; i < allLinks.length; i++) {
  111.           if (allLinks[i].className.hasClass("external") && !allLinks[i].className.hasClass("free")) {
  112.               var expandedLink = document.createElement("span");
  113.               var expandedText = document.createTextNode(" (" + allLinks[i].href + ")");
  114.               expandedLink.appendChild(expandedText);
  115.               allLinks[i].parentNode.insertBefore(expandedLink, allLinks[i].nextSibling);
  116.               expandedURLs[i] = expandedLink;
  117.           }
  118.       }
  119.    }
  120. }
  121.  
  122. onafterprint = function()
  123. {
  124.     for (var i=0; i < expandedURLs.length; i++)
  125.         if (expandedURLs[i])
  126.             expandedURLs[i].removeNode(true);
  127. }